$(document).ready(function () {
    // 初始化省市区选择器
    initRegionSelect();

    // 监听输入框焦点事件
    $('.form-input').focus(function () {
        $(this).removeClass('error');
        $(this).siblings('.error-message').hide();
    });

    // 添加固定电话输入验证
    $('input[name="areaCode"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,4}$/.test(value)) {
            $(this).addClass('error');
            showError('areaCode', '区号格式不正确（3-4位数字）');
        } else {
            $(this).removeClass('error');
            $(this).siblings('.error-message').hide();
        }
    });

    $('input[name="phoneNumber"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,8}$/.test(value)) {
            $(this).addClass('error');
            showError('phoneNumber', '电话号码格式不正确（7-8位数字）');
        } else {
            $(this).removeClass('error');
            $(this).siblings('.error-message').hide();
        }
    });

    $('input[name="extension"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,4}$/.test(value)) {
            $(this).addClass('error');
            showError('extension', '分机号格式不正确（最多4位数字）');
        } else {
            $(this).removeClass('error');
            $(this).siblings('.error-message').hide();
        }
    });

    // 监听输入框焦点事件
    $('.form-input').focus(function () {
        $(this).removeClass('error');
        $(this).siblings('.error-message').hide();
    });
});

function initRegionSelect() {
    const provinces = ['北京市', '上海市', '广东省', '湖南省'];
    const cities = {
        '北京市': ['北京市'],
        '上海市': ['上海市'],
        '广东省': ['广州市', '深圳市', '珠海市', '汕头市', '佛山市', '韶关市', '湛江市', '肇庆市', '江门市', '茂名市', '惠州市', '梅州市', '汕尾市', '河源市', '阳江市', '清远市', '东莞市', '中山市', '潮州市', '揭阳市', '云浮市'],
        '湖南省': ['长沙市', '株洲市', '湘潭市', '衡阳市', '邵阳市', '岳阳市', '常德市', '张家界市', '益阳市', '郴州市', '永州市', '怀化市', '娄底市', '湘西土家族苗族自治州']
    };
    const districts = {
        '长沙市': ['芙蓉区', '天心区', '岳麓区', '开福区', '雨花区', '望城区', '长沙县', '浏阳市', '宁乡市'],
        '广州市': ['越秀区', '海珠区', '荔湾区', '天河区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '从化区', '增城区'],
        '深圳市': ['福田区', '罗湖区', '南山区', '宝安区', '龙岗区', '盐田区', '龙华区', '坪山区', '光明区'],
        '株洲市': ['荷塘区', '芦淞区', '石峰区', '天元区', '渌口区', '攸县', '茶陵县', '炎陵县', '醴陵市'],
        '湘潭市': ['雨湖区', '岳塘区', '湘潭县', '湘乡市', '韶山市'],
        '衡阳市': ['珠晖区', '雁峰区', '石鼓区', '蒸湘区', '南岳区', '衡阳县', '衡南县', '衡山县', '衡东县', '祁东县', '耒阳市', '常宁市'],
        '佛山市': ['禅城区', '南海区', '顺德区', '三水区', '高明区'],
        '东莞市': ['东城街道', '南城街道', '万江街道', '莞城街道', '石碣镇', '石龙镇', '茶山镇', '石排镇', '企石镇', '横沥镇', '桥头镇', '谢岗镇', '东坑镇', '常平镇', '寮步镇', '大朗镇', '麻涌镇', '中堂镇', '高埗镇', '樟木头镇', '大岭山镇', '望牛墩镇', '黄江镇', '洪梅镇', '清溪镇', '沙田镇', '道滘镇', '塘厦镇', '虎门镇', '厚街镇', '凤岗镇', '长安镇'],
        '北京市': ['东城区', '西城区', '朝阳区', '丰台区', '石景山区', '海淀区', '顺义区', '通州区', '大兴区', '房山区', '门头沟区', '昌平区', '平谷区', '密云区', '怀柔区', '延庆区'],
        '上海市': ['黄浦区', '徐汇区', '长宁区', '静安区', '普陀区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '奉贤区', '崇明区']
    };
    // 填充省份数据
    const $province = $('select[name="province"]');
    provinces.forEach(province => {
        $province.append('<option value="' + province + '">' + province + '</option>');
    });
    // 省份改变时更新城市
    $province.change(function () {
        const province = $(this).val();
        const $city = $('select[name="city"]');
        const $district = $('select[name="district"]');

        // 清空并重置城市和区县选择框
        $city.empty().append('<option value="">市</option>');
        $district.empty().append('<option value="">区/县</option>');
        $city.show(); // 确保城市选择框显示

        if (province && cities[province]) {
            // 添加城市选项
            cities[province].forEach(city => {
                $city.append('<option value="' + city + '">' + city + '</option>');
            });

            // 如果是直辖市，自动选中对应的市
            if (province === '北京市' || province === '上海市') {
                $city.val(province);
                // 触发 change 事件以加载区域数据
                $city.trigger('change');
            }
        }
    });

    // 城市改变时更新区县
    $('select[name="city"]').change(function () {
        const city = $(this).val();
        const $district = $('select[name="district"]');

        // 清空并重置区县选择框
        $district.empty().append('<option value="">区/县</option>');

        if (city && districts[city]) {
            districts[city].forEach(district => {
                $district.append('<option value="' + district + '">' + district + '</option>');
            });
        }
    });
}

// 表单验证
function validateForm() {
    let isValid = true;

    // 验证收货人姓名
    const receiverName = $('input[name="receiverName"]').val().trim();
    if (!receiverName) {
        showError('receiverName', '请填写邮寄人姓名');
        isValid = false;
    }

    // 验证地区选择
    const province = $('select[name="province"]').val();
    const city = $('select[name="city"]').val();
    const district = $('select[name="district"]').val();
    if (!province || !city || !district) {
        $('.region-select .error-message').show();
        isValid = false;
    }

    // 验证街道地址
    const streetAddress = $('input[name="streetAddress"]').val().trim();
    if (!streetAddress) {
        showError('streetAddress', '请填写详细地址');
        isValid = false;
    }

    // 验证手机号码
    const mobilePhone = $('input[name="mobilePhone"]').val().trim();
    if (!mobilePhone) {
        showError('mobilePhone', '请填写手机号码');
        isValid = false;
    } else if (!/^1[3-9]\d{9}$/.test(mobilePhone)) {
        showError('mobilePhone', '请填写正确的手机号码');
        isValid = false;
    }

    // 验证固定电话（如果填写了的话）
    const areaCode = $('input[name="areaCode"]').val().trim();
    const phoneNumber = $('input[name="phoneNumber"]').val().trim();
    if ((areaCode || phoneNumber) && !validateFixedPhone(areaCode, phoneNumber)) {
        isValid = false;
    }

    return isValid;
}

// 显示错误信息
function showError(fieldName, message) {
    const $input = $('input[name="' + fieldName + '"]');
    $input.addClass('error');
    $input.siblings('.error-message').text(message).show();
}

// 提交表单
function submitForm() {
    if (!validateForm()) {
        return;
    }

    // 收集表单数据
    const formData = {
        receiverName: $('input[name="receiverName"]').val().trim(),
        mobilePhone: $('input[name="mobilePhone"]').val().trim(),
        areaCode: $('input[name="areaCode"]').val().trim(),
        phoneNumber: $('input[name="phoneNumber"]').val().trim(),
        extension: $('input[name="extension"]').val().trim(),
        province: $('select[name="province"]').val(),
        city: $('select[name="city"]').val(),
        district: $('select[name="district"]').val(),
        streetAddress: $('input[name="streetAddress"]').val().trim(),
        postalCode: $('input[name="postalCode"]').val().trim()
    };

    // 发送到服务器
    $.ajax({
        url: 'addLocation',
        type: 'POST',
        data: formData,
        dataType: "json",
        success: function (response) {
            if (response.success) {
                alert(response.message);
                window.location.href = 'My_fellow_traveler.jsp#mailing-address';
            } else {
                alert(response.message || '保存失败');
            }
        },
        error: function () {
            alert('网络错误，请稍后重试');
        }
    });
}